/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gui;

import exception.SoluzioneException;
import java.util.List;
import javax.swing.JPanel;
import problema.FutoshikiSolver;
import schema.Coordinate;
import schema.Schema;

/**
 *
 * @author Antonio
 */
public abstract class JPanelFutoshikiModel extends JPanel {

    private FutoshikiSolver problema;
    protected Schema schema;

    public void risolvi(int numSol, Schema s) throws SoluzioneException {

        boolean vuoto = true;
        boolean valido = true;

        for (int i = 0; i < s.GRIGLIA; i++) {

            for (int j = 0; j < s.GRIGLIA; j++) {

                if (s.getVal(new Coordinate(i, j)) != 0) {

                    vuoto = false;
                }
                if (s.getVal(new Coordinate(i, j)) > s.GRIGLIA || s.getVal(new Coordinate(i, j)) < 0) {

                    valido = false;
                }

            }
        }

        if (vuoto || !valido) {

            throw new SoluzioneException();
        }

        problema = new FutoshikiSolver(numSol, s);

        problema.risolvi();
    }// risolvi

    protected List<int[][]> getSoluzioni() {

        return problema.getSoluzioni();
    }// getSoluzioni
}
